package demo;

public class Solution {
    public ListNode reverseList(ListNode head) {
        //如果链表为null直接返回
        if(head==null){
            return head;
        }
        //不为空时
        //当前结点为头结点
        ListNode cur=head;
        //头结点的前驱结点为null;
        ListNode prev=null;
        //当前结点不为空时进入循环
        while(cur!=null){
            //定义临时结点存放找下一结点的引用，防止丢失
            ListNode temp=cur.next;
            //再让当前结点引用指向它的前一个结点
            cur.next=prev;
            //为了保持prev始终是在cur的前一个结点
            //prev先变成当前结点
            prev=cur;
            //cur再变成刚刚保存的它的下一个结点
            cur=temp;
        }
        //当cur=null,循环结束，prev就是新的头结点
        return prev;
    }
}
